home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / schulungen / dito / developer / demo.c < prev    next >
C/C++ Source or Header  |  1996-01-27  |  3KB  |  104 lines

  1. /*****************************/
  2. /** DITO Demo               **/
  3. /** (C) Dirk Holtwick, 1996 **/
  4. /*****************************/
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9.  
  10. // SOME USEFULL DEFINITIONS
  11. #define FILEID         "Italiano"
  12. #define ITALIAN(d)    (char *)(&d->str)
  13. #define ENGLISH(d)    (char *)(&d->str+d->ger)
  14. #define TYPE(d)      (d->type)
  15. #define GR1(d)         (char *)(&d->str+d->gr1)
  16. #define GR2(d)         (char *)(&d->str+d->gr2)
  17. #define GRVAL1(d)        (unsigned char)d->grv
  18. #define GRVAL2(d)        (unsigned char)d->grv2
  19. #define GRVAL3(d)        (unsigned char)d->grv3
  20. #define READIMP(d)    ((d->status & 6) >> 1)
  21. #define READLND(d)     (d->status & 1)
  22.  
  23. // WICH TYPE OF VOCABULARY IS IT?
  24. char *Types[]={
  25.     "REST",
  26.     "NOUN",
  27.     "ADJECTIVE",
  28.     "VERB"
  29. };
  30.  
  31. // HOW IMPORTANT?
  32. char *Important[]={
  33.     "VERY IMPORTANT",
  34.     "NORMAL",
  35.     "NOT IMPORTANT"
  36. };
  37.  
  38. // LEARNED?
  39. char *Learned[]={
  40.     "NOT LEARNED",
  41.     "LEARNED"
  42. };
  43.  
  44. // VOCABULARY STRUCTURE THAT IS USED BY ITALAIANO
  45. struct VocData {
  46.     struct    VocData *succ, *pred;                // for list structure
  47.     long        length;                                    // lenth of structure
  48.     short     type;                                        // rest, noun, adjective or verb?
  49.     short     status;                                    // learned, weight
  50.     unsigned short     ger,    gr1,    gr2;            // offsets for strings
  51.     unsigned char        grv,    grv2,    grv3;            // some usefull datas
  52.     char        str;                                        // strings
  53. };
  54.  
  55. // HERE STARTS THE SMALL DEMO THAT SHOWS YOU HOW TO LOAD A VOCFILE
  56. void main(int argc, char *argv[]){
  57.     struct     VocData *act;
  58.     long        i, l, num;
  59.     char        str[20];
  60.     FILE        *in;
  61.  
  62.     if(argc!=2){                                            // Need at least one argument
  63.         puts("USAGE: demo [vocfile]");                // like that
  64.  
  65.     }else{                                                    // otherwise start ...
  66.  
  67.         if (in=fopen(argv[1],"rb")){                    // Open file
  68.             fread(str,strlen(FILEID)+1,1,in);        // Read ID
  69.  
  70.             if(!strcmp(str,FILEID)){                    // Is ID good?
  71.                 fread(&num,4,1,in);                        // Read number of words
  72.     
  73.                 for(i=0;i<num;i++){                        // Loop to read words
  74.                     fread(&l,4,1,in);                        // How long are the following datas
  75.                     act=malloc(l+sizeof(VocData));    // Allocate some memory
  76.                     act->length=l;                            // Insert found length
  77.                     fread(&act->type,l,1,in);            // Read datas into structure
  78.  
  79.                     // SOME NICE OUTPUT
  80.  
  81.                     printf(
  82.                         "Italian:   %s\n"
  83.                         "English:   %s\n"
  84.                         "Info:      %s, %s, %s\n"
  85.                         "Grammar:   %s, %s, %d, %d,%d\n\n",
  86.                         ITALIAN(act),
  87.                         ENGLISH(act),
  88.                         Types[TYPE(act)],
  89.                         Important[READIMP(act)],
  90.                         Learned[READLND(act)],
  91.                         GR1(act), GR2(act), 
  92.                         GRVAL1(act), GRVAL2(act), GRVAL3(act));
  93.  
  94.                     free(act);                                // Free, because is only a demo
  95.                 }
  96.             }else puts("Not an DITO file");            // Error DITO
  97.  
  98.             fclose (in);                                    // Close file
  99.         }else puts("Couldn't open file");            // Error message
  100.  
  101.     }
  102. }
  103.  
  104.